package Factory;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class BeanFactory {
    private static Properties properties =new Properties();
    private static Map<String,Object> map=null;
    static {
        InputStream inputStream=BeanFactory.class.getClassLoader().getResourceAsStream("DaoTest.properties");
        try{
            Object Bean1=null;
            properties.load(inputStream);
            map=new HashMap<String, Object>();
            //找出配置文件中所有的keys使用properties的keys()方法
            Enumeration<Object> keys = properties.keys();
            while(keys.hasMoreElements()){
                String nextElement = (String)keys.nextElement();
                String classpath=properties.getProperty(nextElement);
                Bean1=Class.forName(classpath).newInstance();
                map.put(nextElement,Bean1);
            }
        }catch(Exception e){
            throw new ExceptionInInitializerError("初始化properties失败！");
        }
    }
    /*单例的，在静态代码块中初始化一次就行了，*/
    public  static Object getBean(String beanname){
        return  map.get(beanname);
    }
    /*
    基础版的，每次调用这个方法就会创建新的对象（多例的），有点浪费空间，我们应该使用单例的
    * */
    /*public static Object getBean(){
        Object Bean1=null;
        try{
            String  classPath=properties.getProperty("DaoImpl");
            Bean1 =Class.forName(classPath).newInstance();
        }catch (Exception e){
            e.printStackTrace();
        }

        return Bean1;

    }*/
}
